import { Observable } from 'rxjs'

import { IGroupQueryParams, IGroupPagination, AgentFull, Agent } from '@shared/interfaces/group'
import { IResponse } from '@shared/interfaces/response'

export abstract class GroupService {
  abstract getList(params: IGroupQueryParams): Observable<IGroupPagination>

  abstract getOne(agentCode: string): Observable<Agent>

  abstract create(agentFull: AgentFull): Observable<IResponse>

  abstract update(agent: Agent, agentCode: string): Observable<Agent>

  abstract delete(code: string): Observable<boolean>

  abstract freeze(agentCode: string): Observable<boolean>

  abstract unfreeze(agentCode: string): Observable<boolean>
}
